/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *                                                                           *
 *                          Copyright (c) 2010                               *
 *                  Alen Stojanov [ ioi.alen@gmail.com ]                     *
 *                Jacobs University Bremen, Bremen, Germany                  *
 *                                                                           *
 *                          All Rights Reserved.                             *
 *                                                                           *
 *    Permission to use, copy, modify and distribute this software and       *
 *    its documentation is hereby granted, provided that both the            *
 *    copyright notice and this permission notice appear in all copies of    *
 *    the software, derivative works or modified versions, and any           *
 *    portions thereof, and that both notices appear in supporting           *
 *    documentation.                                                         *
 *                                                                           *
 *    This code is distributed in the hope that it will be useful, but       *
 *    WITHOUT ANY WARRANTY; without even the implied warranty of             *
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS       *
 *    DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER          *
 *    RESULTING FROM THE USE OF THIS SOFTWARE.                               *
 *                                                                           *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef TSPOINT_H_
#define TSPOINT_H_

class TSPoint
{
public:
	enum TSPointType {
		D2,
		D3
	};

	TSPoint();
	TSPoint(double x, double y);
	TSPoint(double x, double y, double z);

	double distance(TSPoint& point);

	TSPoint operator+ (const TSPoint& c) const;
	TSPoint operator- (const TSPoint& c) const;
	TSPoint operator* (double scalar) const;

	double getX();
	double getY();
	double getZ();

	double x;
	double y;
	double z;

private:
	TSPointType type;

public:
	~TSPoint();
};

#endif /* TSPOINT_H_ */
